package lzupdater.locale;

import java.util.HashMap;

//LZRosterUpdater, a java client to update LZRoster
//Copyright (C) 2008 Fraskor from Krasus (e-mail: fraskor@gmail.com)
//
//This file is part of LZRosterUpdater.
//
//LZRosterUpdater is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.

/**
 * 
 * @author Fraskor
 */
public class Translation extends HashMap<String, HashMap<String, String>> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 5245282740454755994L;

	public String getTranslation(Locale locale) {
		// Get the translations for the language
		HashMap<String, String> countrySpecific = get(locale.getLanguage());

		if (countrySpecific == null || countrySpecific.isEmpty())
			return null;

		// Extract the specific translation for the country in the locale
		String translation = countrySpecific.get(locale.getCountry());

		// If no translation is found for this country,
		// send at least one in the current language
		if (translation == null) {
			translation = countrySpecific.values().iterator().next();
		}

		return translation;
	}

	public boolean setTranslation(Locale locale, String translation) {
		HashMap<String, String> countrySpecific = get(locale.getLanguage());

		if (countrySpecific == null) {
			countrySpecific = new HashMap<String, String>();
			put(locale.getLanguage(), countrySpecific);
		}

		boolean override = countrySpecific.containsKey(locale.getCountry());

		countrySpecific.put(locale.getCountry(), translation);

		return override;
	}
}
